package edu.uoc.tds.pec3.cliente;

import edu.uoc.tds.pec3.comun.ConceptoGasto;
import edu.uoc.tds.pec3.comun.Factura;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;

/**
 *
 * @author JUAN ANTONIO
 */
public class PanelGastosTotalesConcepto extends JPanel implements ActionListener {
    private Cliente cliente;
    private JLabel jlabel_GastosTotalesConcepto;
    private JLabel jlabel_Concepto;
    private JLabel jlabel_Total;
    private JComboBox jcombobox_Concepto;
    private JButton jbutton_Buscar;
    private JTable JTable_Tabla;
    private String[] nombresColumnas = {
            "Evento", "Fecha valor", "Proveedor", "Descripción", "Importe"
        };

    public PanelGastosTotalesConcepto(Cliente cliente){
        super();
        this.cliente = cliente;
        iniciarComponentes();
    }

    private void iniciarComponentes(){
        jlabel_GastosTotalesConcepto = new JLabel("Gastos totales por concepto");
        jlabel_Concepto = new JLabel("Concepto:");
        jlabel_Total = new JLabel("Total:");
        jcombobox_Concepto = new JComboBox(cliente.getDescripcionesConceptos().toArray());
        jbutton_Buscar = new JButton("Buscar");
        jbutton_Buscar.setFocusable(false);
        String[][] filas = new String[3][5];
        JTable_Tabla = new JTable(filas, nombresColumnas);
        JTable_Tabla.setFocusable(false);

        JPanel panelCentral = new JPanel(new GridLayout(2, 1, 10, 15));
        JPanel panelCentralArriba = new JPanel();
        JPanel panelCentralAbajo = new JPanel();
        panelCentralArriba.add(jlabel_Concepto);
        panelCentralArriba.add(jcombobox_Concepto);
        panelCentralArriba.add(jbutton_Buscar);
        panelCentralAbajo.add(JTable_Tabla);
        panelCentral.add(panelCentralArriba);
        panelCentral.add(panelCentralAbajo);

        setLayout(new BorderLayout());
        add(jlabel_GastosTotalesConcepto, BorderLayout.NORTH);
        add(panelCentral, BorderLayout.CENTER);
        add(jlabel_Total, BorderLayout.SOUTH);

        jbutton_Buscar.addActionListener(this);
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == jbutton_Buscar){
            configurarTabla();
        }
    }

    private void configurarTabla(){
        long total = 0;

        try {
            ConceptoGasto concepto = cliente.getConceptos().
                    get(jcombobox_Concepto.getSelectedIndex());
            ArrayList<Factura> facturas = cliente.getRemotoPEC3().getFacturas(concepto);

            String[][] filas = new String[facturas.size()][5];
            for (int i = 0; i < facturas.size(); i++) {
                Factura factura = facturas.get(i);
                filas[i][0] = factura.getEvento().getDescripcion();
                filas[i][1] = factura.getFechaValor().toString();
                filas[i][2] = factura.getProveedor().getNombreEntidad();
                filas[i][3] = factura.getDescripcion();
                
                total += factura.getImporte();
                filas[i][4] = Long.toString(factura.getImporte());
                
            }
            JTable_Tabla = new JTable(filas, nombresColumnas);
            jlabel_Total.setText("Total: " + total);

        } catch (RemoteException ex) {
            Logger.getLogger(PanelGastosTotalesConcepto.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
